package org.dxy.api.dto.request.product;

import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;
import org.dxy.domain.model.valobj.Bom;

/**
 * 更新产品请求
 * @author dxy
 * @createTime 2025/8/17
 */
@Data
public class UpdateProductRequest {
    
    /**
     * 产品名称
     */
    @NotBlank(message = "产品名称不能为空")
    @Size(max = 100, message = "产品名称长度不能超过100个字符")
    private String productName;

    /**
     * 产品型号
     */
    @NotBlank(message = "产品型号不能为空")
    @Size(max = 50, message = "产品型号长度不能超过50个字符")
    private String model;

    /**
     * 产品类别
     */
    @NotBlank(message = "产品类别不能为空")
    @Size(max = 50, message = "产品类别长度不能超过50个字符")
    private String category;

    /**
     * 产品类型
     */
    @NotNull(message = "产品类型不能为空")
    private String type;

    /**
     * 产品规格
     */
    @NotBlank(message = "产品规格不能为空")
    @Size(max = 200, message = "产品规格长度不能超过200个字符")
    private String specification;
    
    /**
     * 产品版本
     */
    @NotBlank(message = "产品版本不能为空")
    @Size(max = 20, message = "产品版本长度不能超过20个字符")
    private String version;

    /**
     * 计量单位
     */
    @NotBlank(message = "计量单位不能为空")
    @Size(max = 20, message = "计量单位长度不能超过20个字符")
    private String unit;

    /**
     * BOM 清单（值对象）
     */
    @Valid
    private Bom bom;
}